package entretenimiento.negocio;


import java.util.ArrayList;
import java.util.Collection;
import entretenimiento.dao.Solicitud_dia_campoDAO;
import entretenimiento.dao.Detalle_dia_CampoDAO;
import entretenimiento.excepcion.DAOExcepcion;
import entretenimiento.modelo.Solicitud_dia_Campo;
import entretenimiento.modelo.Detalle_dia_Campo;

public class GestionSolicitudDiaCampo {
	
	public Collection<Solicitud_dia_Campo> listar(int CoDiaCampo) throws DAOExcepcion {
		Solicitud_dia_campoDAO dao = new Solicitud_dia_campoDAO();
		return dao.listar();
	}

	public void aprobarSolicitud(int coDiaCampo, int CoUsuarioAdmin)throws DAOExcepcion{
		Solicitud_dia_campoDAO dao = new Solicitud_dia_campoDAO();
		dao.aprobar(coDiaCampo,CoUsuarioAdmin);
	}
	
	//Aprueba Solicitud - Actualiza
	public Solicitud_dia_Campo Aprobar(int CoDiaCampo, int CoUsuarioAdmin, String FeAprobado, int FlAprobado) throws DAOExcepcion {
			
			Solicitud_dia_campoDAO dao = new Solicitud_dia_campoDAO();
			Solicitud_dia_Campo vo = new Solicitud_dia_Campo();
				vo.setCoDiaCampo(CoDiaCampo);
				vo.setCoUsuarioAdmin(CoUsuarioAdmin);
				vo.setFeAprobado(FeAprobado);
				vo.setFlAprobado(FlAprobado);
				
				return dao.aprobar_solicitud(vo);

	}
	
	public Solicitud_dia_Campo lisCotizacion(int CoDiaCampo) throws DAOExcepcion {
		Solicitud_dia_Campo entidad = new Solicitud_dia_Campo();
		Solicitud_dia_campoDAO daoCabecera = new Solicitud_dia_campoDAO();
				
		Detalle_dia_CampoDAO daoDetalle = new Detalle_dia_CampoDAO(); 		
		Collection<Detalle_dia_Campo> entidadDetalle = new ArrayList<Detalle_dia_Campo>();
		
		entidad =  daoCabecera.obtener(CoDiaCampo);
		entidadDetalle = daoDetalle.detalleCotizacion(CoDiaCampo);
		
		entidad.setLisDetalle_Dia_Campo(entidadDetalle);
				
		return entidad;
	}
	
	//Actualiza Cabecera y Detalle
	public Solicitud_dia_Campo actualizar(int CoDiaCampo, String FeDiaCampo,
			int NuTotalPersonas,double SsImporteTotal,Collection<Detalle_dia_Campo> lisDetalle) throws DAOExcepcion {
		Solicitud_dia_campoDAO dao = new Solicitud_dia_campoDAO();

		Solicitud_dia_Campo vo = new Solicitud_dia_Campo();
		vo.setCoDiaCampo(CoDiaCampo);
		vo.setNuTotalPersonas(NuTotalPersonas);
		vo.setSsImporteTotal(SsImporteTotal);
		vo.setFeDiaCampo(FeDiaCampo);
		
		for(Detalle_dia_Campo s : lisDetalle){
			Detalle_dia_Campo entDetalle = new Detalle_dia_Campo();
			entDetalle.setCoDiaCampo(CoDiaCampo);
			entDetalle.setNuPersona(s.getNuPersona());
			entDetalle.setTxComentario(s.getTxComentario());
			entDetalle.setSsImporte(s.getSsImporte());
			entDetalle.setNuSecuencia(s.getNuSecuencia());
			
			Detalle_dia_CampoDAO daoDet = new  Detalle_dia_CampoDAO();
			daoDet.actualizar(entDetalle);
		}
	
		return dao.actualizar(vo);
	}
	
	public int insertar(int CoResponsable, String FeDiaCampo,int NuTotalPersonas,double SsImporteTotal,int CoClub,
			int CoOferta, Collection<Detalle_dia_Campo> lisDetalle) throws DAOExcepcion {
		Solicitud_dia_campoDAO dao = new Solicitud_dia_campoDAO();

		validardatosCabecera(FeDiaCampo,String.valueOf(NuTotalPersonas),String.valueOf(CoClub));
		
		Solicitud_dia_Campo so = new Solicitud_dia_Campo();
		so.setCoResponsable(CoResponsable);
		so.setFeDiaCampo(FeDiaCampo);
		so.setNuTotalPersonas(NuTotalPersonas);
		so.setSsImporteTotal(SsImporteTotal);		
		so.setCoClub(CoClub);
		so.setCoOferta(CoOferta);
		
		int id = dao.insertar(so);
		
		int x = 1;
		for(Detalle_dia_Campo s : lisDetalle){
			Detalle_dia_Campo entDetalle = new Detalle_dia_Campo();
			entDetalle.setCoDiaCampo(id);
			entDetalle.setCoResponsable(CoResponsable);
			entDetalle.setNuSecuencia(x);
			entDetalle.setNuPersona(s.getNuPersona());
			entDetalle.setSsPrecioPersona(s.getSsPrecioPersona());				
			entDetalle.setSsImporte(s.getSsImporte());
			entDetalle.setTxComentario(s.getTxComentario());
			entDetalle.setCoJuego(s.getCoJuego());
			entDetalle.setCoServicio(s.getCoServicio());
			
			Detalle_dia_CampoDAO daoDet = new  Detalle_dia_CampoDAO();
			daoDet.insertar(entDetalle);
			x++;
		}
		
		return id;
	}

	
	 public  boolean DatoEsValido(String strDato) {
	        return strDato != null && !strDato.isEmpty();
	    }
	 
	 public void validardatosCabecera(String fecha, String nuPersonas,String Club)
				throws DAOExcepcion {
					
					String strMensaje = "";
					if (!DatoEsValido(fecha)){
			            strMensaje = "Error : fecha no puede ser vacio o nulo.";
			        }		
					if (!DatoEsValido(nuPersonas)){
			            strMensaje += "Error : numero de personas no puede ser vacio o nulo.";
			        }
					if (!DatoEsValido(Club)){
			            strMensaje += "Error : Nombre de club no puede ser vacio o nulo.";
			        }					
					if (!strMensaje.isEmpty())
			            throw new DAOExcepcion(strMensaje);
	 }
	 
	 public Collection<Solicitud_dia_Campo> ListarSolicitud() throws DAOExcepcion {
			Solicitud_dia_campoDAO dao = new Solicitud_dia_campoDAO();
			return dao.ListarSolicitud();
	 }
 
}
